A key issue with network booting of pre-operating system (pre-OS) personal computers (PCs) is the difficulty and/or inability to validate the security of such PCs to the server. In addition, many servers are unable to authenticate their clients, and many clients are unable to validate the integrity of their server and/or of the boot files offered to the client by the server. Furthermore, there are significant limitations when booting a new or damaged PC with no installed operating system. There is a need for validating the integrity of the client, server, or boot file, particularly in a pre-OS environment. There is also a need for allowing clients to securely boot regardless of OS state in order to provide a more secure and robust way to boot clients and deploy the OS.